package view;

import java.awt.Color;
import java.awt.ComponentOrientation;
import java.awt.Font;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;

import model.Equipamento;
import model.Setor;
import control.ControllersDaos;

public class VEquipamento extends JFrame {

	 
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField tf_NunSerie;
	private JTextField tf_Marca;
	private JTextField tf_msg;
	private JButton btnNovo;
	private JButton btnAlterar;
	private JButton btnIncluir;
	private JButton btnExcluir; 
	private JTextField tf_Tipo;
	private JButton btnCancelar;
	private JButton btnPesquisar;
	private JComboBox<String> cBox_Garantia;
	private JComboBox<String> cbBox_Setor;
	private Equipamento equipIn       = new Equipamento(null,null ,null);
	//private EquipamentoCRUD equipCrud = new EquipamentoCRUD();
	//private SetorCRUD setorTmp = new SetorCRUD();
	private ControllersDaos controller;
	private VPrincipal telaAnt;

	/**
	 * Launch the application.
	 */
	/*
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					VEquipamento frame = new VEquipamento();
					frame.setVisible(true);
					frame.setLocationRelativeTo(null);
					
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
*/
	private void LimparTela() {
		tf_NunSerie.setText("");
		tf_Marca.setText("");
		tf_Tipo.setText("");
		tf_msg.setText("");

		cbBox_Setor.removeAllItems();
		cBox_Garantia.removeAllItems();
		btnCancelar.setVisible(false);
		btnCancelar.setSelected(false);
		contentPane.remove(btnCancelar);

	}

	private void AtivarCampoBotao() {
		tf_NunSerie.setEnabled(true);
		tf_Marca.setEnabled(true);
		tf_Tipo.setEnabled(true);
		btnAlterar.setEnabled(true);
		btnIncluir.setEnabled(true);
		btnNovo.setEnabled(true);
		btnPesquisar.setEnabled(true);
		btnExcluir.setEnabled(true);

	}

	private void BloquearCampos() {
		tf_NunSerie.setEnabled(true);
		tf_Marca.setEnabled(false);
		tf_Tipo.setEnabled(false);
		btnAlterar.setEnabled(false);
		btnIncluir.setEnabled(false);
		btnExcluir.setEnabled(false);
		btnNovo.setEnabled(true);
		btnPesquisar.setEnabled(true);

	}

	
	/**
	 * Create the frame.
	 */
	public VEquipamento(VPrincipal telaAnterior, ControllersDaos controlador) {
        this();
        this.setLocationRelativeTo(null);
        this.setResizable(false);
        telaAnt    = telaAnterior;
        controller = controlador;
	}
	
	private VEquipamento() {
		addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosed(WindowEvent arg0) {
				telaAnt.setVisible(true);
			}
		});
		setTitle("Cadastro de Equipamento");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 500, 350);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblNSrie = new JLabel("N\u00BA Patrim\u00F4nio");
		lblNSrie.setFont(new Font("Calisto MT", Font.BOLD, 12));
		lblNSrie.setBounds(10, 28, 86, 14);
		contentPane.add(lblNSrie);

		JLabel lblMarca = new JLabel("Marca");
		lblMarca.setFont(new Font("Calisto MT", Font.BOLD, 12));
		lblMarca.setBounds(10, 80, 46, 14);
		contentPane.add(lblMarca);

		JLabel lblTipo = new JLabel("Tipo");
		lblTipo.setFont(new Font("Calisto MT", Font.BOLD, 12));
		lblTipo.setBounds(10, 136, 46, 14);
		contentPane.add(lblTipo);

		JLabel lblGarantia = new JLabel("Garantia");
		lblGarantia.setFont(new Font("Calisto MT", Font.BOLD, 12));
		lblGarantia.setBounds(153, 28, 86, 14);
		contentPane.add(lblGarantia);

		JLabel lblSetor = new JLabel("Setor");
		lblSetor.setFont(new Font("Calisto MT", Font.BOLD, 12));
		lblSetor.setBounds(153, 80, 46, 14);
		contentPane.add(lblSetor);

		tf_NunSerie = new JTextField();
		tf_NunSerie.setBounds(10, 45, 86, 20);
		contentPane.add(tf_NunSerie);
		tf_NunSerie.setColumns(10);

		tf_Marca = new JTextField();
		tf_Marca.setBounds(10, 97, 86, 20);
		contentPane.add(tf_Marca);
		tf_Marca.setColumns(10);

		btnNovo = new JButton("Novo");
		btnNovo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				AtivarCampoBotao();
				btnPesquisar.setEnabled(false);
				btnAlterar.setEnabled(false);
				btnNovo.setEnabled(false);
				btnExcluir.setEnabled(false);
				tf_msg.setText("");
				tf_NunSerie.setText("");

				ArrayList<Setor> listSetor = new ArrayList<Setor>();
				// Preencher a lista com os setores cadastrados e a Garantia
				try {
					//listSetor = setorTmp.listarSetor();
					listSetor = controller.listarSetor();
					cbBox_Setor.removeAllItems();
					for (Setor setor : listSetor) {
						cbBox_Setor.addItem(setor.getId() + " - "
								+ setor.getNome().toUpperCase());
					}
					cBox_Garantia.removeAllItems();
					cBox_Garantia.addItem("Sim");
					cBox_Garantia.addItem("N�o");

					AtivarBtnCancelar();

				} catch (ClassNotFoundException e) {
					tf_msg.setText("Problema interno : " + e.getMessage());

				} catch (SQLException e) {
					tf_msg.setText("Problema interno : " + e.getMessage());

				}
			}
		});
		btnNovo.setFont(new Font("Tahoma", Font.BOLD, 11));
		btnNovo.setIcon(new ImageIcon(VEquipamento.class
				.getResource("/imagens/Novo.jpg")));
		btnNovo.setMnemonic(KeyEvent.VK_N);
		btnNovo.setHorizontalAlignment(SwingConstants.LEFT);
		btnNovo.setBounds(11, 267, 107, 34);
		contentPane.add(btnNovo);

		btnAlterar = new JButton("Alterar");
		btnAlterar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String campoSerie = tf_NunSerie.getText().trim();
				String campoMarca = tf_Marca.getText().trim();
				String campotipo = tf_Tipo.getText().trim();
				String[] s = cbBox_Setor.getSelectedItem().toString().trim()
						.split(" - ");
				String campoSetor = s[0];
				char[] g = cBox_Garantia.getSelectedItem().toString().trim()
						.toUpperCase().toCharArray();
				String campoGarant = String.valueOf(g[0]);
				int nSerie, nSetor;

				if (campoSerie == null || campoSerie.equals("")
						|| campotipo == null || campotipo.equals("")
						|| campoSetor == null || campoSetor.equals("")
						|| campoGarant == null || campoGarant.equals(""))

				{
					tf_msg.setText("Verifique os campos");
				} else {
					try {

						nSerie = Integer.parseInt(campoSerie);
						nSetor = Integer.parseInt(campoSetor);
						equipIn = new Equipamento(nSerie, campoMarca,
								campotipo, campoGarant, nSetor);

						//equipCrud.alterarEquipamento(equipIn);
						controller.alterarEquipamento(equipIn);
						JOptionPane.showMessageDialog(null, "Equipamento Alterado Com SUCESSO!!","Cadastro",JOptionPane.INFORMATION_MESSAGE);

						LimparTela();
						BloquearCampos();
					} catch (NumberFormatException ex) {
						tf_msg.setText("Problema na Altera��o de Equipamento, Verifique os Campos: "
								+ ex.getMessage());
					} catch (ClassNotFoundException ex) {
						tf_msg.setText("Problema na Altera��o do Equipamento: "
								+ ex.getMessage());
					} catch (SQLException ex) {
						tf_msg.setText("Problema na Altera��o do Equipamento no Banco: "
								+ ex.getMessage());
					}
				}
			}

			
			
		});
		btnAlterar.setFont(new Font("Tahoma", Font.BOLD, 11));
		btnAlterar.setMnemonic(KeyEvent.VK_A);
		btnAlterar.setEnabled(false);
		btnAlterar.setBounds(247, 267, 107, 34);
		contentPane.add(btnAlterar);

		btnIncluir = new JButton("Incluir");
		btnIncluir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {

				String campoSerie = tf_NunSerie.getText().trim();
				String campoMarca = tf_Marca.getText().trim();
				String campotipo = tf_Tipo.getText().trim();
				String[] s = cbBox_Setor.getSelectedItem().toString().trim()
						.split(" - ");
				String campoSetor = s[0];
				char[] g = cBox_Garantia.getSelectedItem().toString().trim()
						.toUpperCase().toCharArray();
				String campoGarant = String.valueOf(g[0]);
				int nSerie, nSetor;

				if (campoSerie == null || campoSerie.equals("")
						|| campotipo == null || campotipo.equals("")
						|| campoSetor == null || campoSetor.equals("")
						|| campoGarant == null || campoGarant.equals(""))

				{
					tf_msg.setText("Verifique os campos");
				} else {
					try {

						nSerie = Integer.parseInt(campoSerie);
						nSetor = Integer.parseInt(campoSetor);
						equipIn = new Equipamento(nSerie, campoMarca,
								campotipo, campoGarant, nSetor);

						//equipCrud.inserirEquipamento(equipIn);
						controller.inserirEquipamento(equipIn);
						JOptionPane.showMessageDialog(null, "Equipamento Cadastrado Com SUCESSO!!","Cadastro",JOptionPane.INFORMATION_MESSAGE);

						LimparTela();
						BloquearCampos();
					} catch (NumberFormatException ex) {
						tf_msg.setText("Problema no Casdastro de Equipamento, Verifique os Campos: "
								+ ex.getMessage());
					} catch (ClassNotFoundException ex) {
						tf_msg.setText("Problema no Casdastro do Equipamento: "
								+ ex.getMessage());
					} catch (SQLException ex) {
						tf_msg.setText("Problema no Casdastro do Equipamento no Banco: "
								+ ex.getMessage());
					}
				}
			}
		});

		btnIncluir.setMnemonic(KeyEvent.VK_I);
		btnIncluir.setFont(new Font("Tahoma", Font.BOLD, 11));
		btnIncluir.setEnabled(false);
		btnIncluir.setBounds(129, 267, 107, 34);
		contentPane.add(btnIncluir);

		btnPesquisar = new JButton("Pesquisar");
		btnPesquisar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				String campoSerie = tf_NunSerie.getText().trim();
				ArrayList<Setor> listSetor = new ArrayList<Setor>();
				ArrayList<Equipamento> listEquip = new ArrayList<Equipamento>();
				boolean encontrou = false;
				if (campoSerie == null || campoSerie.equals("")) {
					tf_msg.setText("Informe um Numero de S�rie para Pesquisar");
				} else {
					try {
						int nSerie = Integer.parseInt(campoSerie);
						//listEquip = equipCrud.listarEquipamento();
						listEquip = controller.listarEquipamento();
						for (Equipamento equip : listEquip) {
							if (nSerie == equip.getNumSerie()) {
								tf_NunSerie.setText(equip.getNumSerie() + "");
								tf_Marca.setText(equip.getMarca());
								tf_Tipo.setText(equip.getTipo());
								tf_msg.setText("Obs. Setor atual :"
										+ equip.getIdSetor() + " Garantia: "
										+ equip.getGarantia().toUpperCase());
								encontrou = true;

							}
						}
						if (encontrou) {
							AtivarCampoBotao();
							//listSetor = setorTmp.listarSetor();
							listSetor = controller.listarSetor();
							cbBox_Setor.removeAllItems();
							for (Setor setor : listSetor) {
								cbBox_Setor.addItem(setor.getId() + " - "
										+ setor.getNome().toUpperCase());
							}
							cBox_Garantia.removeAllItems();
							cBox_Garantia.addItem("Sim");
							cBox_Garantia.addItem("N�o");
							btnPesquisar.setEnabled(false);
							btnNovo.setEnabled(false);
							btnIncluir.setEnabled(false);
							tf_NunSerie.setEnabled(false);
						
							AtivarBtnCancelar();

						} else {
							tf_msg.setText("Nenhum Registro Encontrado!");
						}

					} catch (NumberFormatException ex) {
						tf_msg.setText("Problema na Pesquisa do Equipamento: "
								+ ex.getMessage());
					} catch (ClassNotFoundException ex) {
						tf_msg.setText("Problema na Pesquisa do Equipamento: "
								+ ex.getMessage());
					} catch (SQLException ex) {
						tf_msg.setText("Problema na Pesquisa do Equipamento: "
								+ ex.getMessage());
					}

				}
			}

		});
		btnPesquisar.setIcon(new ImageIcon(VEquipamento.class
				.getResource("/imagens/Pesquisar.png")));
		btnPesquisar.setBounds(342, 34, 130, 34);
		contentPane.add(btnPesquisar);

		cbBox_Setor = new JComboBox<String>();
		cbBox_Setor.setBounds(153, 97, 169, 20);
		cbBox_Setor.addItem("");
		contentPane.add(cbBox_Setor);

		btnExcluir = new JButton("Excluir");
		btnExcluir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String campoSerie = tf_NunSerie.getText().trim();
				int nSerie;
				try {

					nSerie = Integer.parseInt(campoSerie);

					equipIn.setNumSerie(nSerie);

					//equipCrud.deletarEquipamento(equipIn);
					JOptionPane.showMessageDialog(null, "Equipamento Exclu�do Com SUCESSO!!","Cadastro",JOptionPane.INFORMATION_MESSAGE);

					LimparTela();
					BloquearCampos();
				} catch (NumberFormatException ex) {
					tf_msg.setText("Problema na Exclus�o do Equipamento, Verifique os Campos: "
							+ ex.getMessage());
				}
				
			}
		});
		btnExcluir.setEnabled(false);
		btnExcluir.setFont(new Font("Tahoma", Font.BOLD, 11));
		btnExcluir.setIcon(new ImageIcon(VEquipamento.class
				.getResource("/imagens/excluir.jpg")));
		btnExcluir.setBounds(365, 267, 107, 34);
		contentPane.add(btnExcluir);

		cBox_Garantia = new JComboBox<String>();
		cBox_Garantia.setBounds(153, 45, 56, 20);
		cBox_Garantia.addItem("   ");
		contentPane.add(cBox_Garantia);

		tf_Tipo = new JTextField();
		tf_Tipo.setBounds(10, 157, 229, 20);
		contentPane.add(tf_Tipo);
		tf_Tipo.setColumns(10);

		tf_msg = new JTextField("* Campo Numerico");
		tf_msg.setForeground(Color.RED);
		tf_msg.setBorder(null);
		tf_msg.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
		tf_msg.setHorizontalAlignment(SwingConstants.LEFT);
		tf_msg.setEditable(false);
		tf_msg.setBackground(SystemColor.control);
		tf_msg.setBounds(10, 206, 462, 50);
		contentPane.add(tf_msg);
		tf_msg.setColumns(10);
		
		JLabel label = new JLabel("*");
		label.setForeground(Color.RED);
		label.setBounds(91, 27, 16, 14);
		contentPane.add(label);
		BloquearCampos();
	}

	private void AtivarBtnCancelar() {
		btnCancelar = new JButton("Cancelar");
		btnCancelar.setBounds(385, 175, 89, 23);
		contentPane.add(btnCancelar); // ativa o cancelar
		btnCancelar.setSelected(true);
		btnCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {

				LimparTela();
				BloquearCampos();

			}
		});
	}
}
